import os
import django


os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'salary.settings')
django.setup(set_prefix=False)

##################################

from employee.models import Student, Score
from django.db.models import Q


"""
3. 依次查询出符合下面条件的信息：
3.1 总成绩大于250分的学生信息
3.2 语文成绩在80-90分之间的学生信息
3.3 有一门科目低于60分的学生信息
3.4 平均分70以上的学生信息
3.5 三门成绩都大于90分的学生姓名 
"""

# 总成绩大于250分的学生信息
# 学生数据
students_data = Student.objects.all()
# 循环学生id
for i in list(students_data.values_list('id')):
    # 获取相应学生总成绩
    total_grade = sum(Score.objects.filter(pk=i[0]).values_list()[0][1:-1])
    if total_grade > 250:
        print("姓名：{} ,年龄：{} ,总成绩{}".format(*students_data.filter(pk=i[0]).values_list()[0][1:], total_grade))
"""
姓名：张青阳 ,年龄：12 ,总成绩283
姓名：吴博文 ,年龄：12 ,总成绩260
"""

print("#"*30)

# 语文成绩在80-90分之间的学生信息
chinese_data = Score.objects.all().filter(chinese__gte=80).filter(chinese__lt=90).values_list('student', 'chinese')
for j in chinese_data:
    print("姓名：{} ,年龄：{} ,语文成绩：{}".format(*students_data.filter(pk=j[0]).values_list()[0][1:], j[1]))

"""
姓名：王一涵 ,年龄：10 ,语文成绩：80
姓名：韩名博 ,年龄：12 ,语文成绩：80
姓名：骆铭峰 ,年龄：11 ,语文成绩：81
姓名：林烽 ,年龄：10 ,语文成绩：89
姓名：吴博文 ,年龄：12 ,语文成绩：89
"""

print("#"*30)
# 有一门科目低于60分的学生信息
less_60 = Score.objects.all().filter(Q(chinese__lt=60) | Q(mathematics__lt=60) | Q(english__lt=60)).values_list('student','chinese','mathematics','english')
for x in less_60:
    print("姓名：{} ,年龄：{} ,语文成绩：{} ,数学成绩：{} ,英语成绩：{}".format(*students_data.filter(pk=x[0]).values_list()[0][1:], *x[1:]))

"""
姓名：骆铭峰 ,年龄：11 ,语文成绩：81 ,数学成绩：82 ,英语成绩：55
姓名：林烽 ,年龄：10 ,语文成绩：89 ,数学成绩：60 ,英语成绩：49
姓名：马小文 ,年龄：12 ,语文成绩：50 ,数学成绩：60 ,英语成绩：62
"""

print("#"*30)
# 平均分70以上的学生信息
for y in Score.objects.all().values_list('student','chinese','mathematics','english'):
    if sum(y[1:])/3 > 70:
        print("姓名：{} ,年龄：{} ,语文成绩：{} ,数学成绩：{} ,英语成绩：{}, 平均分：{:3.2f}".format(*students_data.filter(pk=y[0]).values_list()[0][1:],
                                                               *y[1:],sum(y[1:])/3))

"""
姓名：王一涵 ,年龄：10 ,语文成绩：80 ,数学成绩：75 ,英语成绩：75, 平均分：76.67
姓名：张青阳 ,年龄：12 ,语文成绩：95 ,数学成绩：90 ,英语成绩：98, 平均分：94.33
姓名：韩名博 ,年龄：12 ,语文成绩：80 ,数学成绩：89 ,英语成绩：70, 平均分：79.67
姓名：骆铭峰 ,年龄：11 ,语文成绩：81 ,数学成绩：82 ,英语成绩：55, 平均分：72.67
姓名：赢乘风 ,年龄：11 ,语文成绩：78 ,数学成绩：89 ,英语成绩：65, 平均分：77.33
姓名：吴博文 ,年龄：12 ,语文成绩：89 ,数学成绩：92 ,英语成绩：79, 平均分：86.67
"""

print("#"*30)
# 三门成绩都大于90分的学生姓名
greater_than_90 = Score.objects.all().filter(Q(chinese__gte=90) & Q(mathematics__gte=90) & Q(english__gte=90)).values_list('student','chinese','mathematics','english')
for x in greater_than_90:
    print("姓名：{} ,年龄：{} ,语文成绩：{} ,数学成绩：{} ,英语成绩：{}".format(*students_data.filter(pk=x[0]).values_list()[0][1:], *x[1:]))

"""
姓名：张青阳 ,年龄：12 ,语文成绩：95 ,数学成绩：90 ,英语成绩：98
"""
